草庐IT

Android StrictMode 和堆转储

全部标签

java - 使用 Java JNI 时是否可以调试核心转储?

我的应用程序主要是Java,但对于某些计算,使用C++库。我们的环境是在RedHat3(即将成为RedHat5)上运行的Java1.6。我的问题是C++库不是线程安全的。为了解决这个问题,我们运行多个单线程“工作”进程,并从同样用C++编写的中央工作管理器为它们分配工作。我们的Java应用程序通过第三方产品调用C++工作管理器。由于各种原因,我们想重写C++WorkManager和workers。我赞成全部用Java编写,在每个worker中使用JNI来调用C++库。主要问题是如果C++库核心转储会发生什么。不幸的是,这很常见,我们需要能够看到C++库中的哪一行导致了问题,例如通过检查

c++ - C++中栈和堆的地址

更正:我搞错了指针地址和指针指向的地址的概念,所以修改了下面的代码。现在它打印出我想要的东西,变量a、c、i、j、k、p在堆栈上,变量b、d在堆上。静态和全局变量在另一个段上。非常感谢大家!嗯,我知道这两个概念被深入讨论了......但是我对下面的代码仍然有疑问:#includeusingnamespacestd;classA{};intN=10;voidf(intp){intj=1;floatk=2.0;Ac;A*d=newA();staticintl=23;staticintm=24;cout我的结果是:&a:0x28ff20&b:0x7c2990&i:0x28ff1c&N:0x4

Net 高级调试之六:对象检查之值类型、引用类型、数组和异常的转储

一、简介     今天是《Net高级调试》的第六篇文章。记得我刚接触Net框架的时候,还是挺有信心的,对所谓的值类型和引用类型也能说出自己的见解,毕竟,自己一直在努力。当然这些见解都是书本上的,并没有做到眼见为实,所以总是有些东西说不清楚。今天,我们就好好的说说C#的类型,是从内存级别、从底层来说一下值类型、引用类型到底是什么,它们在内存中的形态,还有也说说数组的内存形态,如何内部布局的,以及我们如何查找由未捕捉的异常引起的程序崩溃。这些都是基础的,如果这些掌握不好,以后的高级调试的道路,也不好走。自从我过了这一关,很多东西理解起来,比较透彻了,但是,还必须努力。当然了,第一次看视频或者看书,

即使注册表设置正确,Windows 也不会生成完整的故障转储

我的客户在使用我编写的VB6程序时遇到软件崩溃。我已将注册表设置为生成完整的故障转储,我看到它与其他在其系统上崩溃的程序一起正常工作,但出于某种原因,对于我的程序,它仍然以完全不同的方式创建简单的故障转储目录。我的程序是在x64计算机上运行的32位程序。如图所示,我已经为SOFTWARE\Microsoft和SOFTWARE\Wow6432Node\Microsoft设置了注册表。还是不行。有谁知道我如何确定每次程序崩溃时都会生成完整的故障转储? 最佳答案 要写入的文件夹的权限查看文件夹C:\ProgramData\Microsof

windows - 使用 windbg 转储 EPROCESS

我正在试验LibVMI和Windows732位;为了正确设置,我需要查看EPROCESS结构的前8个字节(库在内存中搜索魔数(MagicNumber),应该就是它)。我的Windows-fu不强,所以谁能告诉我如何转储适当的内存位?我正在运行本地内核调试器,我已经得到了“dtnt!_EPROCESS”,但这似乎只是向我展示了结构的格式,而不是其中的实际内容。 最佳答案 命令是:dtnt!_EPROCESS您应该能够从!process07的输出中获取地址。 关于windows-使用wind

windows - Application Verifier 自动创建过程转储文件

我知道如何手动使用AppVerif和windbg来调试进程问题,但我正在组装一个自动化系统以在没有用户在场的情况下运行一系列压力测试。我需要一种方法来在AppVerif发现问题时生成进程转储并继续(假设这是一个非fatalerror)。有没有办法正确配置AppVerif以仅生成进程转储而不是中断,或者我是否必须附加windbg并以某种方式使其自动化以在中断发生时创建转储,然后继续. 最佳答案 不,这不是appverif.exe的内置功能。这不是真正的问题,您可以使用另一个程序来生成小型转储。喜欢SysInternals'ProcDu

windows - 从完整内存转储中提取进程转储

我遇到了一个错误,但我无法创建进程转储。我创建了系统的完整内存转储。我如何使用它提取进程转储?Windows。 最佳答案 你不能。通常,属于您的进程的某些内存段可能会被调出并且不驻留在物理内存中。这意味着使用完整的内核内存转储,您不能保证重建进程地址空间。在许多情况下,您可以从内核转储中提取有关进程的有用信息。但是有两个限制:正如我已经提到的,内存可以调出。许多WinDbg扩展不能与内核转储一起使用。这包括SOS,因此从内核空间调查托管进程要困难得多。 关于windows-从完整内存转储

windows - Internet Explorer 8 将其故障转储存储在哪里?

我正在与一个错误作斗争,该错误不会在我的机器上重现,但每次都会在我客户的机器上重复出现。我已经尝试了一切,现在我正在寻找IE8在崩溃后留下的任何调试数据(或其他)。谷歌和微软的搜索结果一无所获。InternetExplorer8将其故障转储存储在哪里?它肯定会在崩溃后向Microsoft发送一些内容,我如何才能看到它? 最佳答案 这里有一篇文章会告诉你如何生成一个迷你转储http://www.vistax64.com/windows-updates/227276-mshtml-dll-internet-explorer-8-cras

c++ - 如果我有小型转储文件或异常结构,我如何获得 winqual 使用的 "bucket id"? (Windows C++)

SO上有几个相关的问题-但是还没找到答案-我想生成一个“签名”/bucketid以向我们的问题跟踪系统报告小型转储/崩溃。由于MS已经使用“bucketids”做到了这一点,我想我可以重新使用他们的bucket/signaturegeneration。我能否从顶级过滤器或过滤器内部的_EXCEPTION_POINTERS对象或_MINIDUMP_EXCEPTION_INFORMATION结构或小型转储本身获取该ID?这是一个C++应用程序。 最佳答案 有一篇论文首先讨论了Microsoft人员如何创建存储桶ID(是的,当然,这篇论文

windows - 根据用户模式故障转储找出 CPU 型号

我有我的应用程序的故障转储。我的应用程序失败,因为一些用户说“无效指令”试图执行我在那里的一些SSSE指令。在WinDBG中,如何找出CPU型号,以便找出其指令集,并支持该指令集,或更新应用程序的最低硬件要求?这是!cpuid的输出:CPF/M/SManufacturerMHz016,4,33000116,4,33000216,4,33000316,4,33000谷歌说的其余命令可能会帮助(!errrec,!cpuinfo,!sysinfo)打印“未找到导出”。 最佳答案 你肯定不会在这里得到太多信息。尽管转储通常不包含所有原始CP